import { fromJS } from 'immutable'

const initState = fromJS({
  count: 100
})

// 在初始化时,它会执行一个动作 @@INIT,但我此时方法中没有此方法
const methods = {
  add(state, data) {
    return state.update('count', v => v + data)
  }
}

export default (state = initState, { type, data }) => {
  // if ('add' === type) {
  //   return state.update('count', v => v + data)
  // }
  // return state

  // 在初始化时,它会执行一个动作 @@INIT,但我此时方法中没有此方法
  // if(methods[type]){
  //   return methods[type](state, data)
  // }
  // return state

  // 异常捕获
  try {
    // methods.@@init // 第1执行此方法,不存在,报异常,被我捕获
    return methods[type](state, data)
  } catch (error) {
    // 第1次执行,或异常调用不存在的方法时出现
    return state
  }
}
